# -*- coding: utf-8 -*-
"""
Created on Thu Aug 24 15:06:38 2023

@author: skunk69
"""

import json

chinese_name = u'轻躁狂检测清单'
english_name = 'Hypomania CheckList'
abbreviation = 'HCL-32'
category = u'精神病学临床量表'

outline = u"""轻躁狂检测清单（Hypomania CheckList, HCL-32）是一个自评问卷，用于筛查抑郁症患者中常常存在而被忽略的轻躁狂成分，帮助医师从抑郁症患者中发现双相障碍患者。该量表适用于认知能力正常者，如果认知能力下降或丧失则无法得出有效测试结果。
轻躁狂症的诱发原因主要包括：遗传因素，无论是群体调查，还是分子遗传学，相关数据显示跟遗传因素存在一定有关；精神因素，根据研究发现，轻躁狂症可能跟精神刺激有关，如失业、失恋、家庭关系不好、长时期高度紧张的生活状态等。"""

instruction = u"""请回忆您情绪比较高涨的那一段时间，当时您的感觉如何？请回答下列所有条目，不管现在状况如何，在当时情况下："""

with open('HCL-32.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for key,line in enumerate(lines):
    _,value = line.strip().split('）',maxsplit=1)
    items[key+1] = value

reverse_items = []
scales = [u'活跃/兴高采烈',u'冒险/激惹']
scales_items = []
factors = []
factors_scales = []
rating = [u'没有',u'有']
score_rules = [0,1]

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《轻躁狂检测清单》属于一个自评问卷，除了应该遵守自评量表的一般规则，还需要注意的是它与一般量表常限定评估时间段不同，该量表询问的是终身情况。"""

reliability = u"""Angst在意大利和瑞典两地的患者中测试，以14分为界区分单相抑郁和双相障碍的敏感性80%，特异性51%，阳性和阴性预测值分别为73%和61%。HCL-32适合作为一个双相障碍的筛查工具，但是不能区分双相的类型。Forty以20分区别双相I型和单相抑郁的敏感性是68%，特异性是83%。
HCL-32包含两个因子在多个研究中得到的结论一致。两个因子分别为“活跃/兴高采烈”和“冒险/激惹”。"""
validity = u"""马永春和杨海晨分别有HCL-32中文版的应用研究。杨海晨报告32个条目的阳性回答率为7.2%~82.6%之间，有较好的内部一致性，全量表和两个因子的Cronbach α 分别为0.84、0.85和0.66。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""主要统计指标为总分。原作者Angst等人以14分作为分界值，以区分单相抑郁和双相障碍。而另外一个作者Forty的研究则报告以20分作为分界值。"""

applications = u"""在欧洲国家研究和应用得较多，有法语、英语、德语、中文等多种语言版本。相关研究几乎都显示HCL-32能较好发现有轻躁狂症者，可以区分单相还是双相。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)